#ifndef GUI_BUTTON_INCLUED
#define GUI_BUTTON_INCLUED

#include <SFML/Graphics.hpp>
#include <string>

#include "Frame.hpp"

namespace gui
{

class Button : public Frame
{
    public:
        Button(const std::string& newText="");

        void SetText(const std::string& newText);
        const std::string GetText() const;

        void SetTextColor(const sf::Color& myColor);
        const sf::Color& GetTextColor() const;

        void SetFont(const sf::Font& myFont);
        const sf::Font& GetFont() const;

        void SetCharacterSize(unsigned int size);
        unsigned int GetCharacterSize() const;

        void SetStyle(unsigned long style);
        unsigned int GetStyle(unsigned long style);

    protected:
        virtual void Render(sf::RenderTarget& target, sf::Renderer& renderer) const;

        virtual void OnMouseClicked(sf::Event& event);
        virtual void OnMouseEntered(sf::Event& event);
        virtual void OnMouseLeft(sf::Event& event);
        virtual void OnMouseButtonPressed(sf::Event& event);
        virtual void OnMouseButtonReleased(sf::Event& event, bool onMe);

        void Update();

        bool myIsPressed;

    private:
        sf::Text myButtonText;


}; // class Button

} // namespace gui


#endif // GUI_BUTTON_INCLUED
